home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / PROGNG_C / MRUTC.LZH / TWINDOW.H < prev    next >
Text File  |  1988-06-13  |  6KB  |  187 lines

  1. /* ------------------- twindow.h ----------------------- */
  2.  
  3. /*      Uncomment this for stacked windows
  4.  *      rather than layered windows.
  5.  *
  6.  * #define FASTWINDOWS
  7.  *
  8.  */
  9.  
  10. /* ------ window colors ---------- */
  11. #undef WHITE
  12. #undef YELLOW
  13. #undef MAGENTA
  14. #define RED   4
  15. #define GREEN 2
  16. #define BLUE  1
  17. #define WHITE (RED+GREEN+BLUE)
  18. #define YELLOW (RED+GREEN)
  19. #define AQUA (GREEN+BLUE)
  20. #define MAGENTA (RED+BLUE)
  21. #define BLACK 0
  22. #define BRIGHT 8
  23. #define DIM 0
  24.  
  25. #define BORDER 0
  26. #define TITLE 1
  27. #define ACCENT 2
  28. #define NORMAL 3
  29. #define ALL 4
  30.  
  31. #define TRUE 1
  32. #define FALSE 0
  33. #define ERROR -1
  34. #define OK 0
  35. /*page*/
  36. /* ------------- window controller structures ----------- */
  37. typedef struct field {    /* data entry field description    */
  38.     char *fmask;        /* field data entry mask        */
  39.     int fprot;            /* field protection                */
  40.     char *fbuff;        /* field buffer                    */
  41.     int ftype;            /* field type                    */
  42.     int frow;            /* field row                    */
  43.     int fcol;            /* field column                    */
  44.     void (*fhelp)(char *);/* field help function        */
  45.     char *fhwin;        /* field help window            */
  46.     int flx, fly;        /* help window location            */
  47.     int (*fvalid)(char *);/* field validation function    */
  48.     struct field *fnxt;    /* next field on template         */
  49.     struct field *fprv;    /* previous field on template     */
  50. } FIELD;
  51. typedef struct _wnd {
  52.     int _wv;          /* true if window is visible     */
  53.     int _hd;          /* true if window was hidden     */
  54.     char *_ws;          /* points to window save block   */
  55.     char *_tl;          /* points to window title           */
  56.     int _wx;          /* nw x coordinate               */
  57.     int _wy;          /* nw y coordinate               */
  58.     int _ww;          /* window width                   */
  59.     int _wh;          /* window height                   */
  60.     int _wsp;          /* scroll pointer                   */
  61.     int _sp;          /* selection pointer               */
  62.     int _cr;          /* cursor x location               */
  63.     int btype;          /* border type                   */
  64.     int wcolor[4];      /* colors for window                */
  65.     int _pn;          /* previous normal color           */
  66.     struct _wnd *_nx; /* points to next window         */
  67.     struct _wnd *_pv; /* points to previous window     */
  68.     FIELD *_fh;          /* points to 1st data entry fld  */    
  69.     FIELD *_ft;          /* points to last data entry fld */    
  70. } WINDOW;
  71. typedef struct w_menu {
  72.     char *mname;
  73.     char **mselcs;
  74.     void (**func)(int, int);
  75. } MENU;
  76.  
  77. #define SAV     (wnd->_ws)
  78. #define WTITLE  (wnd->_tl)
  79. #define COL     (wnd->_wx)
  80. #define ROW     (wnd->_wy)
  81. #define WIDTH     (wnd->_ww)
  82. #define HEIGHT     (wnd->_wh)
  83. #define SCROLL  (wnd->_wsp)
  84. #define SELECT  (wnd->_sp)
  85. #define WCURS   (wnd->_cr)
  86. #define WBORDER    (wnd->wcolor[BORDER])
  87. #define WTITLEC    (wnd->wcolor[TITLE])
  88. #define WACCENT    (wnd->wcolor[ACCENT])
  89. #define WNORMAL    (wnd->wcolor[NORMAL])
  90. #define PNORMAL (wnd->_pn)
  91. #define BTYPE    (wnd->btype)
  92. #define NEXT    (wnd->_nx)
  93. #define PREV    (wnd->_pv)
  94. #define WCOLOR  (wnd->wcolor)
  95. #define VISIBLE (wnd->_wv)
  96. #define HIDDEN  (wnd->_hd)
  97. #define FHEAD    (wnd->_fh)
  98. #define FTAIL   (wnd->_ft)
  99.  
  100. #define NW       (wcs[wnd->btype].nw)
  101. #define NE       (wcs[wnd->btype].ne)
  102. #define SE       (wcs[wnd->btype].se)
  103. #define SW       (wcs[wnd->btype].sw)
  104. #define SIDE     (wcs[wnd->btype].side)
  105. #define LINE     (wcs[wnd->btype].line)
  106. /*page*/
  107. /* -------- function prototypes and macros -------- */
  108.  
  109. /* ------ general-purpose functions and macros ----- */
  110. void clear_screen(void);
  111. int vmode(void);
  112. void cursor(int, int);
  113. void curr_cursor(int *, int *);
  114. int cursor_type(void);
  115. void set_cursor_type(int);
  116. int get_char(void);
  117. int scroll_lock(void);
  118. void vpoke(unsigned, unsigned, unsigned);
  119. int vpeek(unsigned, unsigned);
  120.  
  121. /* ----- window functions and macros ------- */
  122. WINDOW *establish_window(int, int, int, int);
  123. void set_border(WINDOW *, int);
  124. void set_colors(WINDOW *, int, int, int, int);
  125. void set_intensity(WINDOW *, int);
  126. void set_title(WINDOW *, char *);
  127. void display_window(WINDOW *);
  128. void delete_window(WINDOW *);
  129. void clear_window(WINDOW *);
  130. void hide_window(WINDOW *);
  131. void wprintf(WINDOW *, char *, ...);
  132. void wputchar(WINDOW *, int);
  133. void close_all(void);
  134. void wcursor(WINDOW *, int x, int y);
  135. void error_message(char *);
  136. void clear_message(void);
  137. int get_selection(WINDOW *, int, char *);
  138.  
  139. #define reverse_video(wnd) wnd->wcolor[3]=wnd->wcolor[2]
  140. #define normal_video(wnd) wnd->wcolor[3]=wnd->_pn
  141. #define rmove_window(wnd,x,y) repos_wnd(wnd, x, y, 0)
  142. #define move_window(wnd,x,y) repos_wnd(wnd, COL-x, ROW-y, 0)
  143. #define forefront(wnd) repos_wnd(wnd, 0, 0, 1)
  144. #define rear_window(wnd) repos_wnd(wnd, 0, 0, -1)
  145. /*page*/
  146. /* ----- internal to window processes ----- */
  147. void accent(WINDOW *);
  148. void deaccent(WINDOW *);
  149. void scroll(WINDOW *, int);
  150. void repos_wnd(WINDOW *, int, int, int);
  151. void acline(WINDOW *, int);
  152. void remove_delist(WINDOW *);
  153. #define accent(wnd)    acline(wnd, WACCENT)
  154. #define deaccent(wnd) acline(wnd, WNORMAL)
  155. #define clr(bg,fg,in) ((fg)|(bg<<4)|(in))
  156. #define vad(x,y) ((y)*160+(x)*2)
  157. #ifdef FASTWINDOWS
  158. #define cht(ch,at) (((ch)&255)|((at)<<8))
  159. #define displ(w,x,y,c,a) vpoke(VSG,vad(x+COL,y+ROW),cht(c,a))
  160. #define dget(w,x,y) vpeek(VSG,vad(x+COL,y+ROW))
  161. #define verify_wnd(w) (*(w)=listtail)!=NULL
  162. #else
  163. void displ(WINDOW *wnd, int x, int y, int ch, int at);
  164. #endif
  165. /* ------ editor function ------- */
  166. void text_editor(WINDOW *, char *, unsigned);
  167. /* -------- menu function ------- */
  168. void menu_select(char *name, MENU *mn);
  169. /* ----- help functions ------- */
  170. void load_help(char *);
  171. void set_help(char *, int, int);
  172. /* ----- data entry functions ---- */
  173. void init_template(WINDOW *);
  174. FIELD *establish_field(WINDOW *,int,int,char *,char *,int);
  175. void clear_template(WINDOW *);
  176. void field_tally(WINDOW *);
  177. int data_entry(WINDOW *);
  178. void wprompt(WINDOW *, int, int, char *);
  179. void error_message(char *);
  180. void clear_notice(void);
  181. void field_window(FIELD *, char *, int, int);
  182. #define field_protect(f,s)  f->fprot=s
  183. #define field_help(f,h)     f->fhelp=h
  184. #define field_validate(f,v) f->fvalid=v
  185.  
  186.  
  187.